Skip to main content

07 软件设计

编程范式

软件设计的相关原则

  • Don’t Repeat Yourself (DRY) 当在两个或多个地方发现一些相似代码的时候,我们需要把它们的共性抽象出来形成一个唯一的新方法,并且改变现有地方的代码让它们以一些合适的参数调用这个新的方法
  • Keep It Simple, Stupid(KISS) 在界面设计和操作设计上,复杂的东西越来越被众人所鄙视,而简单的东西越来越被人所认可
  • Program to an interface, not an implementation 注重接口,而不是实现,依赖接口,而不是实现
  • You Ain’t Gonna Need It (YAGNI) 只考虑和设计必须的功能,避免过度设计
  • Law of Demeter 最少知识原则
  • 面向对象的 S.O.L.I.D 原则
    • SRP(Single Responsibility Principle)职责单一原则,一个类,只做一件事,并把这件事做好,其只有一个引起它变化的原因
    • OCP(Open/Closed Principle)开闭原则,模块是可扩展的,而不可修改的
    • LSP(Liskov substitution principle)里氏代换原则,子类必须能够替换成它们的基类
    • ISP(Interface Segregation Principle )接口隔离原则,把功能实现在接口中,而不是类中,使用多个专门的接口比使用单一的总接口要好
    • DIP(Dependency Inversion Principle)依赖倒置原则,高层模块不应该依赖于低层模块的实现,而是依赖于高层抽象
  • CCP(Common Closure Principle) 共同封闭原则,一个包中所有的类应该对同一种类型的变化关闭
  • CRP(Common Reuse Principle)共同重用原则 ,包的所有类被一起重用。如果你重用了其中的一个类,就重用全部
  • Hollywood Principle 好莱坞原则,组件都是被动的,所有的组件初始化和调用都由容器负责。即由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控
  • High Cohesion & Low/Loose coupling 高内聚, 低耦合,把模块间的耦合降到最低,而努力让一个模块做到精益求精
  • CoC(Convention over Configuration) 惯例优于配置原则,将一些公认的配置方式和信息作为内部缺省的规则来使用
  • SoC (Separation of Concerns) 关注点分离,在软件开发中,通过各种手段,将问题的各个关注点分开。如果一个问题能分解为独立且较小的问题,就是相对较易解决的
  • DbC(Design by Contract) 契约式设计,对软件系统中的元素之间相互合作以及“责任”与“义务”的比喻
  • ADP(Acyclic Dependencies Principle) 无环依赖原则,包(或服务)之间的依赖结构必须是一个直接的无环图形

软件设计的读物